package org.wx.ormtest.step02.helper;

import lombok.extern.slf4j.Slf4j;

import org.wx.ormtest.step02.anno.Column;
import org.wx.ormtest.step02.entity.User;

import java.lang.reflect.Field;
import java.sql.ResultSet;

/**
 * @description: 利用自定义注解，对结果进行映射
 * @author: wangxun
 * @createDate: 2021/3/2
 * @version: 1.0
 */
@Slf4j
public class UserEntityHelper {
    static public User create(ResultSet rs)throws Exception{
        if(null == rs){
            return null;
        }
        // 获取User的所有属性
        User user = new User();
        Field[] fields = user.getClass().getDeclaredFields();
        for (Field field : fields) {
            // 开启私有属性的访问权限
            field.setAccessible(true);
            // 获取字段上Column
            Column columnAnnotation = field.getAnnotation(Column.class);
            if (columnAnnotation == null) {
                continue;
            }
            // 获取对应的列名
            String columnName = columnAnnotation.value();
            if(null == columnName){
                return null;
            }
            // 利用反射 对对象设置值
            field.set(user,rs.getObject(columnName));
        }
        //log.info("用户信息:{}",user);
        return user;
    }
}
